﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DAL;
using BLL;
using BOL;
using DevComponents.DotNetBar;
using DevComponents.AdvTree;

namespace QuanLyHangXeKhach
{
    public partial class frmBanVe : UserControl
    {
        BanVe bv = new BanVe();
        CapNhatGiaTuyen cngt = new CapNhatGiaTuyen();
        DieuKhien dk = new DieuKhien();
        string mave;
        public string taikhoan;
        string manv1;
        public frmBanVe()
        {
            InitializeComponent();
        }
        

        private void textBoxX1_KeyPress(object sender, KeyPressEventArgs e)
        {
            //if (e.KeyChar == 13)
            //{
            //    List<khachhang> kh = bv.laydskhachhang(txtmakh.Text);
            //    if (kh.Count != 0)
            //        foreach (var row in kh)
            //        {
            //            txttenkh.Text = row.tenkh;
            //            txtdaichi.Text = row.diachikh;
            //            txtsdt.Text = row.sdtkh;
            //        }
            //    else MessageBoxEx.Show("Không có khách hàng mã "+txtmakh.Text+" trong hệ thống, Click button bên cạnh để thêm khách hàng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            //}
        }

        #region Điều khiển đóng/mở form
        private DieuKhien _Commands;
        /// <summary>
        /// Gets or sets the commands associated with the control.
        /// </summary>
        public DieuKhien Commands
        {
            get { return _Commands; }
            set
            {
                if (value != _Commands)
                {
                    DieuKhien oldValue = _Commands;
                    _Commands = value;
                    OnCommandsChanged(oldValue, value);
                }
            }
        }
        /// <summary>
        /// Called when Commands property has changed.
        /// </summary>
        /// <param name="oldValue">Old property value</param>
        /// <param name="newValue">New property value</param>
        protected virtual void OnCommandsChanged(DieuKhien oldValue, DieuKhien newValue)
        {
            if (newValue != null)
            {
                btndong.Command = newValue.dongfrmbanve;
                btntracuulich.Command = newValue.ThongTinTuyenDuong;
                btncnkh.Command = newValue.showcnkhachhang;
            }
            else
            {
                btndong.Command = null;
                btntracuulich.Command = null;
                btncnkh.Command = null;
            }
        }

        #endregion

        private void frmBanVe_Load(object sender, EventArgs e)
        {
            mave = dk.NextID(bv.mavelonnhat().ToString(), "V");
            cobtuyenduong.DataSource = cngt.laytuyen();
            cobtuyenduong.DisplayMember = "ten";
            cobtuyenduong.ValueMember = "ma";
            
        }

        private void maskngay_Validated(object sender, EventArgs e)
        {
            try
            {
                cobgio.Text = "";
                if (cobtuyenduong.Text == "")
                    MessageBoxEx.Show("Hãy chọn một tuyến đường trước");
                else
                {
                    cobgio.DataSource = null;
                    cobgio.Text = "";
                    cobxe.DataSource = null;
                    cobgheso.DataSource = null;
                    cobgheso.Text = "";
                    cobxe.Text = "";

                    cobgio.DataSource = bv.laygio(cobtuyenduong.SelectedValue.ToString(), dk.catngay(maskngay.Text));
                    cobgio.DisplayMember = "gio";
                }
            }
            catch (Exception) { }
        }

        private void cobtuyenduong_SelectedIndexChanged(object sender, EventArgs e)
        {
            maskngay.Text = "";
            cobgio.DataSource = null;
            cobgio.Text = "";
            cobxe.DataSource = null;
            cobgheso.Items.Clear();
            cobgheso.Text = "";
            cobxe.Text = "";
        }

       
        private void cobgio_Validated(object sender, EventArgs e)
        {
            try
            {
                cobxe.DataSource = null;
                cobgheso.Items.Clear();
                cobgheso.Text = "";
                cobxe.Text = "";

                cobxe.DataSource = bv.layxe(cobtuyenduong.SelectedValue.ToString(), dk.catngay(maskngay.Text), int.Parse(cobgio.Text));
                cobxe.DisplayMember = "bienso";
                cobxe.ValueMember = "maxe";
            }
            catch (Exception) { }
            
        }

        private void cobxe_Validated(object sender, EventArgs e)
        {
            try
            {
                cobgheso.DataSource = null;
                cobgheso.Text = "";
                List<ghedadat> gf = bv.layghedat(cobtuyenduong.SelectedValue.ToString(), dk.catngay(maskngay.Text), int.Parse(cobgio.Text), cobxe.SelectedValue.ToString());
                for (int i = 1; i <= bv.sochongoi(cobxe.SelectedValue.ToString()); i++)
                {
                    int k = 0;
                    foreach (var row in gf)
                        if (row.ghe == i) k = 1;
                    if (k == 0)
                        cobgheso.Items.Add(i);
                }
            }
            catch (Exception) { }
        }

        
        private void buttonX1_Click(object sender, EventArgs e)
        {
           
            if (cobgheso.Text == "" || cobgio.Text == "" || cobtuyenduong.Text == "" || maskngay.Text == "" || cobxe.Text == "" || txtmakh.Text == "" || txttenkh.Text == "")
                MessageBoxEx.Show("Bạn hãy nhập đủ thông tin trước", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                int k = 0;
                for (int i = 0; i < advTree1.Nodes.Count; i++)
                {
                    if (cobtuyenduong.SelectedValue.ToString() == advTree1.Nodes[i].Cells[2].Text && maskngay.Text == advTree1.Nodes[i].Cells[3].Text && cobgio.Text == advTree1.Nodes[i].Cells[4].Text && cobxe.SelectedValue.ToString() == advTree1.Nodes[i].Cells[5].Text && cobgheso.Text == advTree1.Nodes[i].Cells[6].Text)
                    {
                        k = 1;
                        break;
                    }
                }
                if (k == 0)
                {
                    advTree1.Nodes.Add(CreatenoidenRow(mave, txtmakh.Text, cobtuyenduong.SelectedValue.ToString(), maskngay.Text, cobgio.Text, cobxe.SelectedValue.ToString(), cobgheso.Text, bv.laygiagannhat(cobtuyenduong.SelectedValue.ToString()).ToString()));
                    mave = dk.NextID(mave, "V");
                }
                else
                    MessageBoxEx.Show("Lịch chạy đã có trong phần đặt vé", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

       
               
      
        private Node CreatenoidenRow(string mave, string makh, string tuyenduong, string ngaydi, string gio, string xe, string soghe, string giatien)
        {
            Node node = new Node(mave);
            node.Cells.Add(new Cell(makh));
            node.Cells.Add(new Cell(tuyenduong));
            node.Cells.Add(new Cell(ngaydi));
            node.Cells.Add(new Cell(gio));
            node.Cells.Add(new Cell(xe));
            node.Cells.Add(new Cell(soghe));
            node.Cells.Add(new Cell(giatien));
            return node;
        }


        private void txtmakh_TextChanged(object sender, EventArgs e)
        {
            txttenkh.Text = "";
            txtdaichi.Text = "";
            txtsdt.Text = "";
        }

        private void buttonX4_Click(object sender, EventArgs e)
        {
            if (advTree1.Nodes.Count == 0)
                MessageBoxEx.Show("không có gì để xóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                advTree1.SelectedNode.Remove();
            }
        }

        public void xoatrang()
        {
            advTree1.Nodes.Clear();
            txtmakh.Text = "";
            txtdaichi.Text = "";
            txtsdt.Text = "";
            txttenkh.Text = "";


        }
        private void buttonX2_Click(object sender, EventArgs e)
        {
            manv1 = "";
            manv1 = bv.laymanv(taikhoan);
            if (advTree1.Nodes.Count == 0)
                MessageBoxEx.Show("Không có gì để lưu", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            else
            {
                
                for (int i = 0; i < advTree1.Nodes.Count; i++)
                {
                    bv.luuve(advTree1.Nodes[i].Cells[0].Text, manv1, advTree1.Nodes[i].Cells[5].Text, advTree1.Nodes[i].Cells[2].Text, dk.catngay(advTree1.Nodes[i].Cells[3].Text), txtmakh.Text, int.Parse(advTree1.Nodes[i].Cells[4].Text), int.Parse(advTree1.Nodes[i].Cells[6].Text), System.DateTime.Now, int.Parse(advTree1.Nodes[i].Cells[7].Text));
                    DialogResult dr = MessageBoxEx.Show("Lưu thành công vé thứ "+(i+1)+" . Click Ok để in vé", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                    if (dr == DialogResult.OK)
                    {
                        frmrptve frm = new frmrptve();
                        //MessageBoxEx.Show("in nè, từ từ rồi làm");
                        frm.mave = advTree1.Nodes[i].Cells[0].Text;
                        frm.ShowDialog();

                    }
                }

                mave = dk.NextID(bv.mavelonnhat().ToString(), "V");
                //DialogResult dr1 =  MessageBoxEx.Show("Lưu thành công " + advTree1.Nodes.Count + " vé. Click Ok để in vé", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                //if (dr1 == DialogResult.OK)
                //    MessageBoxEx.Show("in nè, từ từ rồi làm");
                xoatrang();
            }
        }

        private void txtmakh_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                List<khachhang> kh = bv.laydskhachhang(txtmakh.Text);
                if (kh.Count != 0)
                    foreach (var row in kh)
                    {
                        txttenkh.Text = row.tenkh;
                        txtdaichi.Text = row.diachikh;
                        txtsdt.Text = row.sdtkh;
                    }
                else MessageBoxEx.Show("Không có khách hàng mã " + txtmakh.Text + " trong hệ thống, Click button bên cạnh để thêm khách hàng", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void cobxe_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void cobgio_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }
}
